home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CUCD / Utilities / DOpus / DO5extPrefs / Do5extPrefs.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-03-13  |  25.6 KB  |  963 lines

  1. /*
  2.  *  Source machine generated by GadToolsBox V2.0b
  3.  *  which is (c) Copyright 1991-1993 Jaba Development
  4.  *
  5.  *  GUI Designed by : Jens Weyer
  6.  */
  7.  
  8. // General includes
  9.  
  10. #include <exec/types.h>
  11. #include <intuition/intuition.h>
  12. #include <intuition/classes.h>
  13. #include <intuition/classusr.h>
  14. #include <intuition/imageclass.h>
  15. #include <intuition/gadgetclass.h>
  16. #include <libraries/gadtools.h>
  17. #include <graphics/displayinfo.h>
  18. #include <graphics/gfxbase.h>
  19. #include <clib/exec_protos.h>
  20. #include <clib/intuition_protos.h>
  21. #include <clib/gadtools_protos.h>
  22. #include <clib/graphics_protos.h>
  23. #include <clib/utility_protos.h>
  24. #include <string.h>
  25. #include <stdio.h>
  26. #include <stdlib.h>
  27. #include <clib/diskfont_protos.h>
  28.  
  29. // pragmas
  30.  
  31. #include <pragmas/exec_pragmas.h>
  32. #include <pragmas/intuition_pragmas.h>
  33. #include <pragmas/gadtools_pragmas.h>
  34. #include <pragmas/graphics_pragmas.h>
  35. #include <pragmas/utility_pragmas.h>
  36. #include <pragma/diskfont_lib.h>
  37. #include <pragma/dos_lib.h>
  38. #include <pragma/icon_lib.h>
  39.  
  40. // my EasyRequestArgs() Template include
  41.  
  42. #include <my/EasyReq.h>
  43.  
  44. // Maxon startup include (very well done by Maxon !)
  45.  
  46. #include <wbstartup.h>
  47.  
  48. #include "Do5extPrefs13.h"
  49.  
  50. // some declarations
  51.  
  52. int EasyReq(struct Window *, char *, char *, char *);
  53. /*int CheckOpusVersion(void);*/
  54. void LoadENVars(void);
  55. int SwapState(int,int);
  56. void SwapCheck(int,int);
  57. int GetEnv(char *,int);
  58. void SetEnv(char *, int,int);
  59. void InitVarExist(void);
  60. void PrepSetEnv(char *,int,int);
  61. void SetNum(int,int);
  62. int GetNum(int);
  63. int Exists(char *);
  64. void GetToolTypes(char *);
  65.  
  66. static unsigned char *version = "$VER:DO5extPrefs 1.3  ("__DATE__") by Jens Weyer for DOpus 5.65+";
  67.  
  68. struct Library     *GadToolsBase;
  69. int                        VarExist[VarMemSize];
  70. int                        VarDefault[VarMemSize];
  71. int                        NoNoLabel = 0;
  72. int                        DLook = 0;
  73. int                        NoCustomDrag = 0;
  74. int                        ShowUseDTFirst = 0;
  75. int                        UseWBInfo = 0;
  76. int                        WBTitle = 0;
  77. int                        QuickIconDrag = 0;
  78. int                        PopTime = 10;
  79. int                        NoMUFS = 0;
  80. int                        Benefy = 0;
  81. int                        HidePadLock = 0;
  82. int                        CmdLineLength = 512;
  83. int                        IconSpaceX = 3;
  84. int                        IconSpaceY = 5;
  85. int                        IconGridX = 0;
  86. int                        IconGridY = 0;
  87. int                        ListerEditing = 0;
  88. char                    AGHelp[500];
  89.  
  90. struct Screen         *Scr = NULL;
  91. UBYTE                 *PubScreenName = "Workbench";
  92. APTR                   VisualInfo = NULL;
  93. struct Window         *Project0Wnd = NULL;
  94. struct Gadget         *Project0GList = NULL;
  95. struct Menu           *Project0Menus = NULL;
  96. struct IntuiMessage    Project0Msg;
  97. struct Gadget         *Project0Gadgets[19];
  98. UWORD                  Project0Left = 10;
  99. UWORD                  Project0Top = 15;
  100. UWORD                  Project0Width = 334;
  101. UWORD                  Project0Height = 220;
  102. UBYTE                 *Project0Wdt = (UBYTE *)"DO5extPrefs v1.3";
  103. struct TextAttr       *Font, Attr;
  104. UWORD                  FontX, FontY;
  105. UWORD                  OffX, OffY;
  106. struct TextFont       *Project0Font = NULL;
  107.  
  108. struct NewMenu Project0NewMenu[] = {
  109.     NM_TITLE, (STRPTR)"Project", NULL, 0, NULL, NULL,
  110.     NM_ITEM, (STRPTR)"About...", (STRPTR)"?", 0, 0L, (APTR)Project0About,
  111.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  112.     NM_ITEM, (STRPTR)"Use", (STRPTR)"U", 0, 0L, (APTR)Project0Use,
  113.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  114.     NM_ITEM, (STRPTR)"Save", (STRPTR)"S", 0, 0L, (APTR)Project0Save,
  115.     NM_ITEM, (STRPTR)NM_BARLABEL, NULL, 0, 0L, NULL,
  116.     NM_ITEM, (STRPTR)"Quit", (STRPTR)"Q", 0, 0L, (APTR)Project0Quit,
  117.     NM_END, NULL, NULL, 0, 0L, NULL };
  118.  
  119. UWORD Project0GTypes[] = {
  120.     BUTTON_KIND,
  121.     CHECKBOX_KIND,
  122.     CHECKBOX_KIND,
  123.     CHECKBOX_KIND,
  124.     CHECKBOX_KIND,
  125.     CHECKBOX_KIND,
  126.     CHECKBOX_KIND,
  127.     CHECKBOX_KIND,
  128.     INTEGER_KIND,
  129.     BUTTON_KIND,
  130.     CHECKBOX_KIND,
  131.     CHECKBOX_KIND,
  132.     CHECKBOX_KIND,
  133.     INTEGER_KIND,
  134.     INTEGER_KIND,
  135.     INTEGER_KIND,
  136.     CHECKBOX_KIND,
  137.     CHECKBOX_KIND,
  138.     CHECKBOX_KIND
  139. };
  140.  
  141. struct NewGadget Project0NGad[] = {
  142.     5, 198, 147, 16, (UBYTE *)"_Save", NULL, GD_Save, PLACETEXT_IN, NULL, (APTR)SaveClicked,
  143.     121, 7, 26, 11, (UBYTE *)"_NoNoLabel", NULL, GD_Label, PLACETEXT_LEFT, NULL, (APTR)LabelClicked,
  144.     121, 24, 26, 11, (UBYTE *)"_NoCustomDrag", NULL, GD_NoCustomDrag, PLACETEXT_LEFT, NULL, (APTR)NoCustomDragClicked,
  145.     121, 42, 26, 11, (UBYTE *)"_WorkbenchTitle", NULL, GD_WBTitle, PLACETEXT_LEFT, NULL, (APTR)WBTitleClicked,
  146.     121, 61, 26, 11, (UBYTE *)"_QuickIconDrag", NULL, GD_QuickIconDrag, PLACETEXT_LEFT, NULL, (APTR)QuickIconDragClicked,
  147.     161, 7, 26, 11, (UBYTE *)"_UseWBInfo", NULL, GD_UseWBInfo, PLACETEXT_RIGHT, NULL, (APTR)UseWBInfoClicked,
  148.     161, 24, 26, 11, (UBYTE *)"Sh_owUseDatatypesFirst", NULL, GD_DTF, PLACETEXT_RIGHT, NULL, (APTR)DTFClicked,
  149.     161, 42, 26, 11, (UBYTE *)"3D_Look", NULL, GD_3DLook, PLACETEXT_RIGHT, NULL, (APTR)DLookClicked,
  150.     197, 99, 53, 17, (UBYTE *)"PopUpDelay (in 1/50 secs.)", NULL, GD_TimePopUpDelay, PLACETEXT_LEFT, NULL, (APTR)TimePopUpDelayClicked,
  151.     182, 198, 147, 16, (UBYTE *)"Us_e", NULL, GD_Use, PLACETEXT_IN, NULL, (APTR)UseClicked,
  152.     161, 61, 26, 11, (UBYTE *)"No_MultiUser", NULL, GD_NoMUFS, PLACETEXT_RIGHT, NULL, (APTR)NoMUFSClicked,
  153.     121, 80, 26, 11, (UBYTE *)"_Benefy", NULL, GD_Benefy, PLACETEXT_LEFT, NULL, (APTR)BenefyClicked,
  154.     161, 80, 26, 11, (UBYTE *)"_HidePadLock", NULL, GD_HidePadLock, PLACETEXT_RIGHT, NULL, (APTR)HidePadLockClicked,
  155.     197, 118, 53, 17, (UBYTE *)"CommandLineLength (in chars)", NULL, GD_LengthOfCmdLine, PLACETEXT_LEFT, NULL, (APTR)LengthOfCmdLineClicked,
  156.     95, 138, 53, 17, (UBYTE *)"IconSpaceX", NULL, GD_IconSpaceX, PLACETEXT_LEFT, NULL, (APTR)IconSpaceXClicked,
  157.     162, 138, 53, 17, (UBYTE *)"Y", NULL, GD_IconSpaceY, PLACETEXT_LEFT, NULL, (APTR)IconSpaceYClicked,
  158.     121, 157, 26, 11, (UBYTE *)"IconGrid_X", NULL, GD_IconGridX, PLACETEXT_LEFT, NULL, (APTR)IconGridXClicked,
  159.     162, 157, 26, 11, (UBYTE *)"IconGrid_Y", NULL, GD_IconGridY, PLACETEXT_RIGHT, NULL, (APTR)IconGridYClicked,
  160.     121, 176, 26, 11, (UBYTE *)"L_isterEditing", NULL, GD_LEd, PLACETEXT_LEFT, NULL, (APTR)LEdClicked
  161. };
  162.  
  163. ULONG Project0GTags[] = {
  164.     (GT_Underscore), '_', (TAG_DONE),
  165.     (GT_Underscore), '_', (TAG_DONE),
  166.     (GT_Underscore), '_', (TAG_DONE),
  167.     (GT_Underscore), '_', (TAG_DONE),
  168.     (GT_Underscore), '_', (TAG_DONE),
  169.     (GT_Underscore), '_', (TAG_DONE),
  170.     (GT_Underscore), '_', (TAG_DONE),
  171.     (GT_Underscore), '_', (TAG_DONE),
  172.     (GA_TabCycle), FALSE, (GTIN_Number), 10, (GTIN_MaxChars), 10, (STRINGA_Justification), (GACT_STRINGCENTER), (TAG_DONE),
  173.     (GT_Underscore), '_', (TAG_DONE),
  174.     (GT_Underscore), '_', (TAG_DONE),
  175.     (GT_Underscore), '_', (TAG_DONE),
  176.     (GT_Underscore), '_', (TAG_DONE),
  177.     (GA_TabCycle), FALSE, (GTIN_Number), 512, (GTIN_MaxChars), 4, (STRINGA_Justification), (GACT_STRINGCENTER), (TAG_DONE),
  178.     (GA_TabCycle), FALSE, (GTIN_Number), 3, (GTIN_MaxChars), 2, (STRINGA_Justification), (GACT_STRINGCENTER), (TAG_DONE),
  179.     (GA_TabCycle), FALSE, (GTIN_Number), 5, (GTIN_MaxChars), 2, (STRINGA_Justification), (GACT_STRINGCENTER), (TAG_DONE),
  180.     (GT_Underscore), '_', (TAG_DONE),
  181.     (GT_Underscore), '_', (TAG_DONE),
  182.     (GT_Underscore), '_', (TAG_DONE)
  183. };
  184.  
  185. static UWORD ComputeX( UWORD value )
  186. {
  187.     return(( UWORD )((( FontX * value ) + 3 ) / 6 ));
  188. }
  189.  
  190. static UWORD ComputeY( UWORD value )
  191. {
  192.     return(( UWORD )((( FontY * value ) + 5 ) / 11 ));
  193. }
  194.  
  195. static void ComputeFont( UWORD width, UWORD height )
  196. {
  197.     Forbid();
  198.     Font = &Attr;
  199.     Font->ta_Name = (STRPTR)GfxBase->DefaultFont->tf_Message.mn_Node.ln_Name;
  200.     Font->ta_YSize = FontY = GfxBase->DefaultFont->tf_YSize;
  201.     FontX = GfxBase->DefaultFont->tf_XSize;
  202.     Permit();
  203.  
  204.     OffX = Scr->WBorLeft;
  205.     OffY = Scr->RastPort.TxHeight + Scr->WBorTop + 1;
  206.  
  207.     if ( width && height ) {
  208.         if (( ComputeX( width ) + OffX + Scr->WBorRight ) > Scr->Width )
  209.             goto UseTopaz;
  210.         if (( ComputeY( height ) + OffY + Scr->WBorBottom ) > Scr->Height )
  211.             goto UseTopaz;
  212.     }
  213.     return;
  214.  
  215. UseTopaz:
  216.     Font->ta_Name = (STRPTR)"topaz.font";
  217.     FontX = FontY = Font->ta_YSize = 8;
  218. }
  219.  
  220. int SetupScreen( void )
  221. {
  222.     if ( ! ( Scr = LockPubScreen( PubScreenName )))
  223.         return( 1L );
  224.  
  225.     ComputeFont( 0, 0 );
  226.  
  227.     if ( ! ( VisualInfo = GetVisualInfo( Scr, TAG_DONE )))
  228.         return( 2L );
  229.  
  230.     return( 0L );
  231. }
  232.  
  233. void CloseDownScreen( void )
  234. {
  235.     if ( VisualInfo ) {
  236.         FreeVisualInfo( VisualInfo );
  237.         VisualInfo = NULL;
  238.     }
  239.  
  240.     if ( Scr        ) {
  241.         UnlockPubScreen( NULL, Scr );
  242.         Scr = NULL;
  243.     }
  244. }
  245.  
  246. void Project0Render( void )
  247. {
  248.     ComputeFont( Project0Width, Project0Height );
  249.  
  250.     DrawBevelBox( Project0Wnd->RPort, OffX + ComputeX( 5 ),
  251.                     OffY + ComputeY( 4 ),
  252.                     ComputeX( 323 ),
  253.                     ComputeY( 190 ),
  254.                     GT_VisualInfo, VisualInfo, GTBB_Recessed, TRUE, TAG_DONE );
  255.     DrawBevelBox( Project0Wnd->RPort, OffX + ComputeX( 2 ),
  256.                     OffY + ComputeY( 1 ),
  257.                     ComputeX( 330 ),
  258.                     ComputeY( 217 ),
  259.                     GT_VisualInfo, VisualInfo, TAG_DONE );
  260. }
  261.  
  262. int HandleProject0IDCMP( void )
  263. {
  264.     struct IntuiMessage    *m;
  265.     struct MenuItem        *n;
  266.     int            (*func)();
  267.     BOOL            running = TRUE;
  268.  
  269.     while( m = GT_GetIMsg( Project0Wnd->UserPort )) {
  270.  
  271.         CopyMem(( char * )m, ( char * )&Project0Msg, (long)sizeof( struct IntuiMessage ));
  272.  
  273.         GT_ReplyIMsg( m );
  274.  
  275.         switch ( Project0Msg.Class ) {
  276.  
  277.             case    IDCMP_REFRESHWINDOW:
  278.                 GT_BeginRefresh( Project0Wnd );
  279.                 Project0Render();
  280.                 GT_EndRefresh( Project0Wnd, TRUE );
  281.                 break;
  282.  
  283.             case    IDCMP_CLOSEWINDOW:
  284.                 running = Project0CloseWindow();
  285.                 break;
  286.  
  287.             case    IDCMP_VANILLAKEY:
  288.                 running = Project0VanillaKey();
  289.                 break;
  290.             case    IDCMP_RAWKEY:
  291.                 running = Project0RawKey();
  292.                 break;
  293.  
  294.             case    IDCMP_GADGETUP:
  295.             case    IDCMP_GADGETDOWN:
  296.                 func = ( void * )(( struct Gadget * )Project0Msg.IAddress )->UserData;
  297.                 running = func();
  298.                 break;
  299.  
  300.             case    IDCMP_MENUPICK:
  301.                 while( Project0Msg.Code != MENUNULL ) {
  302.                     n = ItemAddress( Project0Menus, Project0Msg.Code );
  303.                     func = (void *)(GTMENUITEM_USERDATA( n ));
  304.                     running = func();
  305.                     Project0Msg.Code = n->NextSelect;
  306.                 }
  307.                 break;
  308.         }
  309.     }
  310.     return( running );
  311. }
  312.  
  313. int OpenProject0Window( void )
  314. {
  315.     struct NewGadget    ng;
  316.     struct Gadget    *g;
  317.     UWORD        lc, tc;
  318.     UWORD        wleft = Project0Left, wtop = Project0Top, ww, wh;
  319.  
  320.     ComputeFont( Project0Width, Project0Height );
  321.  
  322.     ww = ComputeX( Project0Width );
  323.     wh = ComputeY( Project0Height );
  324.  
  325.     if (( wleft + ww + OffX + Scr->WBorRight ) > Scr->Width ) wleft = Scr->Width - ww;
  326.     if (( wtop + wh + OffY + Scr->WBorBottom ) > Scr->Height ) wtop = Scr->Height - wh;
  327.  
  328.     if ( ! ( Project0Font = OpenDiskFont( Font )))
  329.         return( 5L );
  330.  
  331.     if ( ! ( g = CreateContext( &Project0GList )))
  332.         return( 1L );
  333.  
  334.     for( lc = 0, tc = 0; lc < Project0_CNT; lc++ ) {
  335.  
  336.         CopyMem((char * )&Project0NGad[ lc ], (char * )&ng, (long)sizeof( struct NewGadget ));
  337.  
  338.         ng.ng_VisualInfo = VisualInfo;
  339.         ng.ng_TextAttr   = Font;
  340.         ng.ng_LeftEdge   = OffX + ComputeX( ng.ng_LeftEdge );
  341.         ng.ng_TopEdge    = OffY + ComputeY( ng.ng_TopEdge );
  342.         ng.ng_Width      = ComputeX( ng.ng_Width );
  343.         ng.ng_Height     = ComputeY( ng.ng_Height);
  344.  
  345.         Project0Gadgets[ lc ] = g = CreateGadgetA((ULONG)Project0GTypes[ lc ], g, &ng, ( struct TagItem * )&Project0GTags[ tc ] );
  346.  
  347.         while( Project0GTags[ tc ] ) tc += 2;
  348.         tc++;
  349.  
  350.         if ( NOT g )
  351.             return( 2L );
  352.     }
  353.  
  354.     if ( ! ( Project0Menus = CreateMenus( Project0NewMenu, GTMN_FrontPen, 0L, TAG_DONE )))
  355.         return( 3L );
  356.  
  357.     LayoutMenus( Project0Menus, VisualInfo, TAG_DONE );
  358.  
  359.     if ( ! ( Project0Wnd = OpenWindowTags( NULL,
  360.                  WA_Left, ((Scr->Width) / 2) - (Project0Width / 2),
  361.                  WA_Top, ((Scr->Height) / 2) - (Project0Height / 2),
  362.                 WA_Width,    ww + OffX + Scr->WBorRight,
  363.                 WA_Height,    wh + OffY + Scr->WBorBottom,
  364.                 WA_IDCMP,    BUTTONIDCMP|CHECKBOXIDCMP|INTEGERIDCMP|IDCMP_GADGETDOWN|IDCMP_MENUPICK|IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|IDCMP_REFRESHWINDOW|IDCMP_RAWKEY,
  365.                 WA_Flags,    WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_SMART_REFRESH|WFLG_ACTIVATE,
  366.                 WA_Gadgets,    Project0GList,
  367.                 WA_Title,    Project0Wdt,
  368.                 WA_ScreenTitle,    "extended Preferences for DOpus5 - (c)1997-98 by Jens Weyer",
  369.                 TAG_DONE )))
  370.     return( 4L );
  371.  
  372.     SetMenuStrip( Project0Wnd, Project0Menus );
  373.     GT_RefreshWindow( Project0Wnd, NULL );
  374.  
  375.     Project0Render();
  376.  
  377.     return( 0L );
  378. }
  379.  
  380. void CloseProject0Window( void )
  381. {
  382.     if ( Project0Menus      ) {
  383.         ClearMenuStrip( Project0Wnd );
  384.         FreeMenus( Project0Menus );
  385.         Project0Menus = NULL;    }
  386.  
  387.     if ( Project0Wnd        ) {
  388.         CloseWindow( Project0Wnd );
  389.         Project0Wnd = NULL;
  390.     }
  391.  
  392.     if ( Project0GList      ) {
  393.         FreeGadgets( Project0GList );
  394.         Project0GList = NULL;
  395.     }
  396.  
  397.     if ( Project0Font ) {
  398.         CloseFont( Project0Font );
  399.         Project0Font = NULL;
  400.     }
  401. }
  402.  
  403. // everything above this point was generated by GadToolsBox
  404.  
  405. void main(int argc, char *argv[])
  406. {
  407.   BOOL running = TRUE;
  408.   GadToolsBase = OpenLibrary("gadtools.library",39L);
  409.   if (GadToolsBase)
  410.   {
  411. /*    running = CheckOpusVersion();
  412.     if (running)
  413.     {*/
  414.       memset(AGHelp,0,499);
  415.       GetToolTypes(argv[0]);
  416.       SetupScreen();
  417.       OpenProject0Window();
  418.       InitVarExist();
  419.       LoadENVars();
  420.       while(running == TRUE)
  421.       {
  422.         WaitPort(Project0Wnd->UserPort);
  423.         running = HandleProject0IDCMP();
  424.       }
  425.       CloseProject0Window();
  426.       CloseDownScreen();
  427. /*    }
  428.     else
  429.     {
  430.       CloseLibrary(GadToolsBase);
  431.       exit(30);
  432.     }*/
  433.     CloseLibrary(GadToolsBase);
  434.   } // if (GadToolsBase)
  435.   else
  436.   {
  437.     exit(40);
  438.   }
  439. }
  440.  
  441. /*int CheckOpusVersion(void)
  442. {
  443.   FILE *f;
  444.   double Tes;
  445.   char Exe[100];
  446.   int Test;
  447.   int Ret = 0;
  448.   strcpy(Exe,"C:Version DOpus5:DirectoryOpus >T:DOVersion");
  449.   Execute(Exe,0,0);
  450.   memset(Exe,99,0);
  451.   f = fopen("T:DOVersion","r");
  452.   if (f)
  453.   {
  454.     Test = fscanf(f,"%s",Exe);
  455.     Test = fscanf(f,"%ld",Tes);
  456.     fclose(f);
  457.   }
  458.   DeleteFile("T:DOVersion");
  459.   if (Tes >= 5.65)
  460.   {
  461.     Ret = 1;
  462.   }
  463.   return(Ret);
  464. }
  465. */
  466. /* This file contains empty template routines that
  467.  * the IDCMP handler will call uppon. Fill out these
  468.  * routines with your code or use them as a reference
  469.  * to create your program.
  470.  */
  471.  
  472. int SaveClicked( void )
  473. {
  474.     /* routine when gadget "_Save" is clicked. */
  475.   PrepSetEnv("ENVARC:DOpus/3DLook",DLook,Do_DLook);
  476.   PrepSetEnv("ENVARC:DOpus/NoNoLabel",NoNoLabel,Do_NoNoLabel);
  477.   PrepSetEnv("ENVARC:DOpus/NoCustomDrag",NoCustomDrag,Do_NoCustomDrag);
  478.   PrepSetEnv("ENVARC:DOpus/QuickIconDrag",QuickIconDrag,Do_QIconDrag);
  479.   PrepSetEnv("ENVARC:DOpus/PopUpDelay",PopTime,Do_PopUpDelay);
  480.   PrepSetEnv("ENVARC:DOpus/ShowUseDatatypesFirst",ShowUseDTFirst,Do_ShUDTFirst);
  481.   PrepSetEnv("ENVARC:DOpus/WorkbenchTitle",WBTitle,Do_WBTitle);
  482.   PrepSetEnv("ENVARC:DOpus/UseWBInfo",UseWBInfo,Do_UseWBInfo);
  483.   PrepSetEnv("ENVARC:DOpus/NoMUFS",NoMUFS,Do_NoMUFS);
  484.   PrepSetEnv("ENVARC:DOpus/Benefy",Benefy,Do_Benefy);
  485.   PrepSetEnv("ENVARC:DOpus/HidePadLock",HidePadLock,Do_HidePadLock);
  486.   PrepSetEnv("ENVARC:DOpus/CommandLineLength",CmdLineLength,Do_CmdLLength);
  487.   PrepSetEnv("ENVARC:DOpus/IconSpaceX",IconSpaceX,Do_IconSpaceX);
  488.   PrepSetEnv("ENVARC:DOpus/IconSpaceY",IconSpaceY,Do_IconSpaceY);
  489.   PrepSetEnv("ENVARC:DOpus/IconGridX",IconGridX,Do_IconGridX);
  490.   PrepSetEnv("ENVARC:DOpus/IconGridY",IconGridY,Do_IconGridY);
  491.   PrepSetEnv("ENVARC:DOpus/ListerEditing",ListerEditing,Do_ListerEditing);
  492.   UseClicked();
  493.   return(TRUE);
  494. }
  495.  
  496. int LabelClicked( void )
  497. {
  498.     /* routine when gadget "_NoNoLabel" is clicked. */
  499.   NoNoLabel = Project0Msg.Code;
  500.   return(TRUE);
  501. }
  502.  
  503. int NoCustomDragClicked( void )
  504. {
  505.     /* routine when gadget "_NoCustomDrag" is clicked. */
  506.   NoCustomDrag = Project0Msg.Code;
  507.   return(TRUE);
  508. }
  509.  
  510. int WBTitleClicked( void )
  511. {
  512.     /* routine when gadget "_WorkbenchTitle" is clicked. */
  513.  
  514.   WBTitle = Project0Msg.Code;
  515.   return(TRUE);
  516. }
  517.  
  518. int QuickIconDragClicked( void )
  519. {
  520.     /* routine when gadget "_QuickIconDrag" is clicked. */
  521.   QuickIconDrag = Project0Msg.Code;
  522.   return(TRUE);
  523. }
  524.  
  525. int UseWBInfoClicked( void )
  526. {
  527.     /* routine when gadget "_UseWBInfo" is clicked. */
  528.   UseWBInfo = Project0Msg.Code;
  529.   return(TRUE);
  530. }
  531.  
  532. int DTFClicked( void )
  533. {
  534.     /* routine when gadget "Sh_owUseDatatypesFirst" is clicked. */
  535.   ShowUseDTFirst = Project0Msg.Code;
  536.   return(TRUE);
  537. }
  538.  
  539. int DLookClicked( void )
  540. {
  541.     /* routine when gadget "3D_Look" is clicked. */
  542.   DLook = Project0Msg.Code;
  543.   return(TRUE);
  544. }
  545.  
  546. int TimePopUpDelayClicked( void )
  547. {
  548.     /* routine when gadget "in 1/50 secs." is clicked. */
  549.   PopTime = GetNum(8);
  550.   return(TRUE);
  551. }
  552.  
  553. int UseClicked( void )
  554. {
  555.     /* routine when gadget "Us_e" is clicked. */
  556.   PrepSetEnv("ENV:DOpus/3DLook",DLook,Do_DLook);
  557.   PrepSetEnv("ENV:DOpus/NoNoLabel",NoNoLabel,Do_NoNoLabel);
  558.   PrepSetEnv("ENV:DOpus/NoCustomDrag",NoCustomDrag,Do_NoCustomDrag);
  559.   PrepSetEnv("ENV:DOpus/QuickIconDrag",QuickIconDrag,Do_QIconDrag);
  560.   PrepSetEnv("ENV:DOpus/PopUpDelay",PopTime,Do_PopUpDelay);
  561.   PrepSetEnv("ENV:DOpus/ShowUseDatatypesFirst",ShowUseDTFirst,Do_ShUDTFirst);
  562.   PrepSetEnv("ENV:DOpus/WorkbenchTitle",WBTitle,Do_WBTitle);
  563.   PrepSetEnv("ENV:DOpus/UseWBInfo",UseWBInfo,Do_UseWBInfo);
  564.   PrepSetEnv("ENV:DOpus/NoMUFS",NoMUFS,Do_NoMUFS);
  565.   PrepSetEnv("ENV:DOpus/Benefy",Benefy,Do_Benefy);
  566.   PrepSetEnv("ENV:DOpus/HidePadLock",HidePadLock,Do_HidePadLock);
  567.   PrepSetEnv("ENV:DOpus/CommandLineLength",CmdLineLength,Do_CmdLLength);
  568.   PrepSetEnv("ENV:DOpus/IconSpaceX",IconSpaceX,Do_IconSpaceX);
  569.   PrepSetEnv("ENV:DOpus/IconSpaceY",IconSpaceY,Do_IconSpaceY);
  570.   PrepSetEnv("ENV:DOpus/IconGridX",IconGridX,Do_IconGridX);
  571.   PrepSetEnv("ENV:DOpus/IconGridY",IconGridY,Do_IconGridY);
  572.   PrepSetEnv("ENV:DOpus/ListerEditing",ListerEditing,Do_ListerEditing);
  573.   return(TRUE);
  574. }
  575.  
  576. int NoMUFSClicked( void )
  577. {
  578.     /* routine when gadget "No_MultiUser" is clicked. */
  579.   NoMUFS = Project0Msg.Code;
  580.   return(TRUE);
  581. }
  582.  
  583. int BenefyClicked( void )
  584. {
  585.     /* routine when gadget "_Benefy" is clicked. */
  586.   Benefy = Project0Msg.Code;
  587.   return(TRUE);
  588. }
  589.  
  590. int HidePadLockClicked( void )
  591. {
  592.     /* routine when gadget "_HidePadLock" is clicked. */
  593.   HidePadLock = Project0Msg.Code;
  594.   return(TRUE);
  595. }
  596.  
  597. int LengthOfCmdLineClicked( void )
  598. {
  599.     /* routine when gadget "chars" is clicked. */
  600.   CmdLineLength = GetNum(13);
  601.   return(TRUE);
  602. }
  603.  
  604. int IconSpaceXClicked( void )
  605. {
  606.     /* routine when gadget "IconSpaceX" is clicked. */
  607.   IconSpaceX = GetNum(14);
  608.   return(TRUE);
  609. }
  610.  
  611. int IconSpaceYClicked( void )
  612. {
  613.     /* routine when gadget "Y" is clicked. */
  614.   IconSpaceY = GetNum(15);
  615.   return(TRUE);
  616. }
  617.  
  618. int IconGridXClicked( void )
  619. {
  620.     /* routine when gadget "IconGrid_X" is clicked. */
  621.   IconGridX = Project0Msg.Code;
  622.   return(TRUE);
  623. }
  624.  
  625. int IconGridYClicked( void )
  626. {
  627.     /* routine when gadget "IconGrid_Y" is clicked. */
  628.   IconGridY = Project0Msg.Code;
  629.   return(TRUE);
  630. }
  631.  
  632. int LEdClicked( void )
  633. {
  634.     /* routine when gadget "L_isterEditing" is clicked. */
  635.   ListerEditing = Project0Msg.Code;
  636.   return(TRUE);
  637. }
  638.  
  639. int Project0About( void )
  640. {
  641.     /* routine when (sub)item "About..." is selected. */
  642.   EasyReq(Project0Wnd,"About DO5extPrefs","DO5extPrefs v1.3\nCopyright (c)1997-98 by Jens Weyer.\nFREEWARE\n\nENV - Var editor for DOpus5 Magellan +.\n\nDOpus Magellan + is Copyright (c)\nJonathan Potter & GPSoftware.","Ok");
  643.   return(TRUE);
  644. }
  645.  
  646. int Project0Save( void )
  647. {
  648.     /* routine when (sub)item "Save" is selected. */
  649.   SaveClicked();
  650.   return(TRUE);
  651. }
  652.  
  653. int Project0Use( void )
  654. {
  655.     /* routine when (sub)item "Use" is selected. */
  656.   UseClicked();
  657.   return(TRUE);
  658. }
  659.  
  660. int Project0Quit( void )
  661. {
  662.     /* routine when (sub)item "Quit" is selected. */
  663.   return(FALSE);
  664. }
  665.  
  666.  
  667. int Project0CloseWindow( void )
  668. {
  669.     /* routine for "IDCMP_CLOSEWINDOW". */
  670.   return(Project0Quit());
  671. }
  672.  
  673. int Project0VanillaKey( void )
  674. {
  675.     /* routine for "IDCMP_VANILLAKEY". */
  676.   switch(Project0Msg.Code)
  677.   {
  678.     case 's':
  679.     case 'S':
  680.                    SaveClicked();
  681.                    break;
  682.     case 'e':
  683.     case 'E':
  684.                    UseClicked();
  685.                    break;
  686.     case 'n':
  687.     case 'N':
  688.                    NoNoLabel = SwapState(NoNoLabel,1);
  689.                    break;
  690.     case 'c':
  691.     case 'C':
  692.                    NoCustomDrag = SwapState(NoCustomDrag,2);
  693.                    break;
  694.     case 'w':
  695.     case 'W':
  696.                     WBTitle = SwapState(WBTitle,3);
  697.                     break;
  698.     case 'q':
  699.     case 'Q':
  700.                    QuickIconDrag = SwapState(QuickIconDrag,4);
  701.                    break;
  702.     case 'u':
  703.     case 'U':
  704.                   UseWBInfo = SwapState(UseWBInfo,5);
  705.                   break;
  706.     case 'o':
  707.     case 'O':
  708.                    ShowUseDTFirst = SwapState(ShowUseDTFirst,6);
  709.                    break;
  710.     case 'l':
  711.     case 'L':
  712.                   DLook = SwapState(DLook,7);
  713.                   break;
  714.     case 'm':
  715.     case 'M':
  716.                   NoMUFS = SwapState(NoMUFS,10);
  717.                   break;
  718.     case 'b':
  719.     case 'B':
  720.                   Benefy = SwapState(Benefy,11);
  721.                   break;
  722.     case 'h':
  723.     case 'H':
  724.                   HidePadLock = SwapState(HidePadLock,12);
  725.                   break;
  726.     case 'x':
  727.     case 'X':
  728.                   IconGridX = SwapState(IconGridX,16);
  729.                   break;
  730.     case 'y':
  731.     case 'Y':
  732.                   IconGridY = SwapState(IconGridY,17);
  733.                   break;
  734.     case 'i':
  735.     case 'I':
  736.                   ListerEditing = SwapState(ListerEditing,18);
  737.                   break;
  738.   }
  739.   return(TRUE);
  740. }
  741.  
  742. int SwapState(int State, int Gad)
  743. {
  744.   if (State)
  745.   {
  746.     GT_SetGadgetAttrs(Project0Gadgets[Gad],Project0Wnd,NULL,
  747.                                      GTCB_Checked, 0,
  748.                                      TAG_DONE);
  749.     State = 0;
  750.   }
  751.   else
  752.   {
  753.     GT_SetGadgetAttrs(Project0Gadgets[Gad],Project0Wnd,NULL,
  754.                                      GTCB_Checked, 1,
  755.                                      TAG_DONE);
  756.     State = 1;
  757.   }
  758.   return(State);
  759. }
  760.  
  761. void LoadENVars(void)
  762. {
  763.   DLook = GetEnv("ENV:DOpus/3DLook",Do_DLook);
  764.   NoNoLabel = GetEnv("ENV:DOpus/NoNoLabel",Do_NoNoLabel);
  765.   NoCustomDrag = GetEnv("ENV:DOpus/NoCustomDrag",Do_NoCustomDrag);
  766.   QuickIconDrag = GetEnv("ENV:DOpus/QuickIconDrag",Do_QIconDrag);
  767.   PopTime = GetEnv("ENV:DOpus/PopUpDelay",Do_PopUpDelay);
  768.   ShowUseDTFirst = GetEnv("ENV:DOpus/ShowUseDatatypesFirst",Do_ShUDTFirst);
  769.   WBTitle = GetEnv("ENV:DOpus/WorkbenchTitle",Do_WBTitle);
  770.   UseWBInfo = GetEnv("ENV:DOpus/UseWBInfo",Do_UseWBInfo);
  771.   NoMUFS = GetEnv("ENV:DOpus/NoMUFS",Do_NoMUFS);
  772.   Benefy = GetEnv("ENV:DOpus/Benefy",Do_Benefy);
  773.   HidePadLock = GetEnv("ENV:DOpus/HidePadLock",Do_HidePadLock);
  774.   CmdLineLength = GetEnv("ENV:DOpus/CommandLineLength",Do_CmdLLength);
  775.   IconSpaceX = GetEnv("ENV:DOpus/IconSpaceX",Do_IconSpaceX);
  776.   IconSpaceY = GetEnv("ENV:DOpus/IconSpaceY",Do_IconSpaceY);
  777.   IconGridX = GetEnv("ENV:DOpus/IconGridX",Do_IconGridX);
  778.   IconGridY = GetEnv("ENV:DOpus/IconGridY",Do_IconGridY);
  779.   ListerEditing = GetEnv("ENV:DOpus/ListerEditing",Do_ListerEditing);
  780.   if (PopTime == 0 && Exists("ENV:DOpus/PopUpDelay") == 0)
  781.   {
  782.     PopTime = 10;
  783.   }
  784.   if (CmdLineLength == 0 && Exists("ENV:DOpus/CommandLineLength") == 0)
  785.   {
  786.     CmdLineLength = 512;
  787.   }
  788.   if (IconSpaceX == 0 && Exists("ENV:DOpus/IconSpaceX") == 0)
  789.   {
  790.     IconSpaceX = 3;
  791.   }
  792.   if (IconSpaceY == 0 && Exists("ENV:DOpus/IconSpaceY") == 0)
  793.   {
  794.     IconSpaceY = 5;
  795.   }
  796.   SwapCheck(NoNoLabel,1);
  797.   SwapCheck(NoCustomDrag,2);
  798.   SwapCheck(WBTitle,3);
  799.   SwapCheck(QuickIconDrag,4);
  800.   SwapCheck(UseWBInfo,5);
  801.   SwapCheck(ShowUseDTFirst,6);
  802.   SwapCheck(DLook,7);
  803.   SwapCheck(NoMUFS,10);
  804.   SwapCheck(Benefy,11);
  805.   SwapCheck(HidePadLock,12);
  806.   SwapCheck(IconGridX,16);
  807.   SwapCheck(IconGridY,17);
  808.   SwapCheck(ListerEditing,18);
  809.   SetNum(PopTime,8);
  810.   SetNum(CmdLineLength,13);
  811.   SetNum(IconSpaceX,14);
  812.   SetNum(IconSpaceY,15);
  813.   return;
  814. }
  815.  
  816. void SwapCheck(int State, int Gad)
  817. {
  818.   if (State)
  819.   {
  820.     GT_SetGadgetAttrs(Project0Gadgets[Gad],Project0Wnd,NULL,
  821.                                      GTCB_Checked, 1,
  822.                                      TAG_DONE);
  823.   }
  824.   return;
  825. }
  826.  
  827. int GetEnv(char *File, int Loc)
  828. {
  829.   FILE *f;
  830.   int Value = 0;
  831.   f = fopen(File,"r");
  832.   if (f)
  833.   {
  834.     fscanf(f,"%4ld",&Value);
  835.     fclose(f);
  836.     VarExist[Loc] = 1;
  837.   }
  838.   return(Value);
  839. }
  840.  
  841. void SetEnv(char *File, int Value, int Loc)
  842. {
  843.   FILE *f;
  844.   f = fopen(File,"w");
  845.   if (f)
  846.   {
  847.     fprintf(f,"%ld\n",Value);
  848.     fclose(f);
  849.   }
  850.   return;
  851. }
  852.  
  853. void InitVarExist(void)
  854. {
  855.   int i;
  856.   for(i = 0; i < VarMemSize; i++)
  857.   {
  858.     VarExist[i] = -1;
  859.   }
  860.   VarDefault[Do_DLook] = 0;
  861.   VarDefault[Do_NoNoLabel] = 0;
  862.   VarDefault[Do_NoCustomDrag] = 0;
  863.   VarDefault[Do_QIconDrag] = 0;
  864.   VarDefault[Do_PopUpDelay] = 10;
  865.   VarDefault[Do_ShUDTFirst] = 0;
  866.   VarDefault[Do_WBTitle] = 0;
  867.   VarDefault[Do_NoMUFS] = 0;
  868.   VarDefault[Do_Benefy] = 0;
  869.   VarDefault[Do_HidePadLock] = 0;
  870.   VarDefault[Do_CmdLLength] = 512;
  871.   VarDefault[Do_IconSpaceX] = 3;
  872.   VarDefault[Do_IconSpaceY] = 5;
  873.   VarDefault[Do_IconGridX] = 0;
  874.   VarDefault[Do_IconGridY] = 0;
  875.   VarDefault[Do_ListerEditing] = 0;
  876.   return;
  877. }
  878.  
  879. void PrepSetEnv(char *File,int Value,int Loc)
  880. {
  881.   if (VarExist[Loc] != -1)
  882.   {
  883.     if (Value == VarDefault[Loc])
  884.     {
  885.       DeleteFile(File);
  886.     }
  887.     else
  888.     {
  889.       SetEnv(File,Value,Loc);
  890.     }
  891.   }
  892.   else
  893.   {
  894.     if (Value != VarDefault[Loc])
  895.     {
  896.       SetEnv(File,Value,Loc);
  897.     }
  898.   }
  899.   return;
  900. }
  901.  
  902. void SetNum(int Value,int Gad)
  903. {
  904.   GT_SetGadgetAttrs(Project0Gadgets[Gad],Project0Wnd,NULL,
  905.                                    GTIN_Number,Value,
  906.                                    TAG_DONE);
  907.   return;
  908. }
  909.  
  910. int GetNum(int Gad)
  911. {
  912.   int Wert = 0;
  913.   GT_GetGadgetAttrs(Project0Gadgets[Gad],Project0Wnd,NULL,
  914.                                    GTIN_Number, &Wert,
  915.                                    TAG_DONE);
  916.   return(Wert);
  917. }
  918.  
  919. int Exists(char *datei)
  920. {
  921.   BPTR mylock;
  922.   int i = 0;
  923.   mylock = Lock(datei,SHARED_LOCK);
  924.   if (mylock)
  925.   {
  926.     i = 1;
  927.   }
  928.   UnLock(mylock);
  929.   return i;
  930. }
  931.  
  932. int Project0RawKey(void)
  933. {
  934.   char ExeHelp[512];
  935.   if (Project0Msg.Code == 95 && strlen(AGHelp) != 0)
  936.   {
  937.  
  938.     // will be replaced by amigaguide.library functions in next version
  939.  
  940.     strcpy(ExeHelp,"MultiView ");
  941.     strcat(ExeHelp,AGHelp);
  942.     Execute(ExeHelp,0,0);
  943.   } // if (Project0Msg.Code...)
  944.   return(TRUE);
  945. } // int Project0RawKey()
  946.  
  947. void GetToolTypes(char *IconPath)
  948. {
  949.   struct DiskObject *Icon = NULL;
  950.   Icon = GetDiskObject(IconPath);
  951.   if (Icon)
  952.   {
  953.     char *Types;
  954.     if (Types = FindToolType((UBYTE **)Icon->do_ToolTypes,"HELP"))
  955.     {
  956.       strcpy(AGHelp,Types);
  957.     } // if (Types = ...)
  958.     FreeDiskObject(Icon);
  959.   } // if (Icon)
  960.   return;
  961. } // void GetToolTypes()
  962.  
  963.